package fr.ifsic.film.client.ui;

import com.google.gwt.user.client.rpc.AsyncCallback;
import com.google.gwt.user.client.ui.Grid;
import com.google.gwt.user.client.ui.Label;
import com.google.gwt.user.client.ui.ListBox;
import com.google.gwt.user.client.ui.TextBox;

import fr.ifsic.film.client.FilmProject;
import fr.ifsic.film.client.dto.ActeurDTO;
import fr.ifsic.film.client.dto.FilmDTO;
import fr.ifsic.film.client.dto.VedetteDTO;
import fr.ifsic.film.client.dto.VedetteIdDTO;

public class NouvelleVedette extends NouveauType {

	ListBox film, personne;
	TextBox role;

	ActeurDTO[] pdto;
	FilmDTO[] fdto;

	public NouvelleVedette() {
		super("Entrez une Vedette");

		Grid grid = new Grid(3, 2);
		verticalPanel.add(grid);

		Label lblNewLabel_2 = new Label("Film");
		grid.setWidget(0, 0, lblNewLabel_2);

		film = new ListBox();
		grid.setWidget(0, 1, film);

		Label lblNewLabel_3 = new Label("Acteur");
		grid.setWidget(1, 0, lblNewLabel_3);

		personne = new ListBox();
		grid.setWidget(1, 1, personne);

		Label lblSexe = new Label("Role");
		grid.setWidget(2, 0, lblSexe);

		role = new TextBox();
		grid.setWidget(2, 1, role);

		horizontalPanel.add(confirmer);
		horizontalPanel.add(annuler);
	}

	public void refreshListe() {
		FilmProject.greetingService
				.listActeur(new AsyncCallback<ActeurDTO[]>() {

					@Override
					public void onFailure(Throwable caught) {
					}

					@Override
					public void onSuccess(ActeurDTO[] result) {
						while (personne.getItemCount() > 0)
							personne.removeItem(0);

						pdto = result;
						for (ActeurDTO p : result) {
							personne.addItem(p.getPersonne().getNom() + " "
									+ p.getPersonne().getPrenom());
						}
					}
				});

		FilmProject.greetingService.listFilm(new AsyncCallback<FilmDTO[]>() {

			@Override
			public void onFailure(Throwable caught) {
			}

			@Override
			public void onSuccess(FilmDTO[] result) {
				while (film.getItemCount() > 0)
					film.removeItem(0);

				fdto = result;
				for (FilmDTO f : result) {
					film.addItem(f.getTitre());
				}
			}
		});
	}

	protected void confirmer() {
		FilmProject.changePage(FilmProject.accueil);

		VedetteDTO vdto = new VedetteDTO();
		vdto.setPersonne(pdto[personne.getSelectedIndex()].getPersonne());
		vdto.setFilm(fdto[film.getSelectedIndex()]);
		vdto.setRole(role.getText());
		vdto.setId(new VedetteIdDTO(fdto[film.getSelectedIndex()].getF(),
				pdto[personne.getSelectedIndex()].getP()));
		FilmProject.greetingService.addV(vdto, new AsyncCallback<Integer>() {

			@Override
			public void onFailure(Throwable caught) {
			}

			@Override
			public void onSuccess(Integer result) {
			}
		});

		super.confirmer();
	}
}
